#pragma once
/*--------------------------------------------------------------------------------
 * Adaptive Intelligence - Foundation Framework Class Library
 * Version 2.00
 * 
 * Desired Access Rights Enumeration
 *      Lists the flag values for desired I/O security access.
 *------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------
 * System Imports
 *------------------------------------------------------------------------------*/
#include "stdafx.h"
using namespace System;

namespace Adaptive
{
	namespace Foundation
	{
		/// <summary>
		/// Lists the flag values for desired I/O security access.
		/// </summary>
		[Flags()]
		public enum class DesiredAccessRights
		{
			/// <summary>Indicates the flag for generic execution.</summary>
			GenericExecute				= GENERIC_EXECUTE,
			/// <summary>Indicates the flag for generic read.</summary>
			GenericRead					= GENERIC_READ,
			/// <summary>Indicates the flag for generic write.</summary>
			GenericWrite				= GENERIC_WRITE,
			/// <summary>Indicates the flag for file creation.</summary>
			AddFile						= FILE_ADD_FILE,
			/// <summary>Indicates the flag for path or directory creation.</summary>
			AddSubdirectory				= FILE_ADD_SUBDIRECTORY,
			/// <summary>Indicates the flag for all access rights.</summary>
			AllAccess					= FILE_ALL_ACCESS,
			/// <summary>Indicates the flag for appending file data.</summary>
			AppendData					= FILE_APPEND_DATA,
			/// <summary>Indicates the flag for creating a named pipe instance.</summary>
			CreatePipeInstance			= FILE_CREATE_PIPE_INSTANCE,
			/// <summary>Indicates the flag for child object deletion.</summary>
			DeleteChild					= FILE_DELETE_CHILD,
			/// <summary>Indicates the flag for file execution.</summary>
			Execute						= FILE_EXECUTE,
			/// <summary>Indicates the flag for listing the directory contents.</summary>
			ListDirectory				= FILE_LIST_DIRECTORY,
			/// <summary>Indicates the flag for reading file attributes. </summary>
			ReadAttributes				= FILE_READ_ATTRIBUTES,
			/// <summary>Indicates the flag for reading file data. </summary>
			ReadData					= FILE_READ_DATA,
			/// <summary>Indicates the flag for reading extended file attributes.</summary>
			ReadExtendedAttributes		= FILE_READ_EA,
			/// <summary>Indicates the flag for traversal. </summary>
			Traverse					= FILE_TRAVERSE,
			/// <summary>Indicates the flag for writing the file attributes. </summary>
			WriteAttributes				= FILE_WRITE_ATTRIBUTES,
			/// <summary>Indicates the flag for writing data. </summary>
			WriteData					= FILE_WRITE_DATA,
			/// <summary>Indicates the flag for writing extended attributes </summary>
			WriteExtendedAttributes		= FILE_WRITE_EA,
			/// <summary>Indicates the flag for standard read access.</summary>
			StandardRead				= STANDARD_RIGHTS_READ,
			/// <summary>Indicates the flag for standard write access.</summary>
			StandardWrite				= STANDARD_RIGHTS_WRITE,
			/// <summary>Indicates the flag for synchronization.</summary>
			Synchronize					= SYNCHRONIZE
		};
	}
}
